package com.atguigu.common.annotation;

import com.atguigu.common.valid.ListValueValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * 自定义校验注解满足三个条件：
 *  校验信息
 *  分组校验
 *  自定义校验负载信息
 *  @Target({ElementType.METHOD, 方法
 *  ElementType.FIELD, 属性
 *  ElementType.ANNOTATION_TYPE,
 *  ElementType.CONSTRUCTOR, 构造器
 *  ElementType.PARAMETER, 参数
 *  ElementType.TYPE_USE})
 */
@Documented
@Constraint(validatedBy = {ListValueValidator.class}) // 使用哪个校验器进行校验，指定校验器
@Retention(RetentionPolicy.RUNTIME) // 运行时
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
public @interface ListValue {
    // 错误信息
    String message() default "{com.atguigu.common.annotation.ListValue.message}";
    // 支持分组校验功能
    Class<?>[] groups() default {};
    // 自定义负载信息
    Class<? extends Payload>[] payload() default {};

    int[] value() default {};
}
